草庐IT

Java CMS GC 行为

全部标签

php - 将此对象添加到此静态数组的奇怪行为

目前我用这段代码进行测试:type=$type;$this->message=$message;self::$_alerts[]=$this;}}$alert=newAlert();$alert->add("warning","test1");$alert->add("error","test2");echo"";print_r(Alert::$_alerts);echo"";但我的结果并不像预期的那样:Array([0]=>AlertObject([type:Alert:private]=>error[message:Alert:private]=>test2)[1]=>AlertO

php - strtr 行为怪异 - 从字符串中删除变音符号

我很难从某些$string中删除变音符号。我的代码是虽然预期输出将是Priliszlutouckykunupeldabelskeody。相反,我收到了非常奇怪的回复:Puiszliucuuluueoudoks�ku�u�s�pd�ld�scbelsks�s�dy.我认为这可能是多字节字符的问题,但我发现strtr是多字节安全的。我的假设错了吗?我错过了什么? 最佳答案 问题是您的输入翻译字符串是输出翻译字符串的两倍(因为Unicode)并且strtr()使用字节而不是字符;在这种情况下,翻译数组会更好:$string="Příliš

php - PHP include 语句的行为和正确使用

我有以下目录和文件:└──project├──index.php└──lib├──file1.php└──file2.php当我按预期在浏览器中尝试时,它确实有效。特别是我认为file1.php中的include语句是有道理的,因为它使用了file2.php相对于index.php位置的路径,其中包括file1.php以及file1.php的代码将被执行的位置。但是,令我惊讶的是,如果我将file1.php中的include语句更改为:include'file2.php';它仍然有效。我想了解为什么这两个include语句都有效,并了解两者中哪个更正确。 最

php - 带有闭包的意外 namespace 行为

使用PHP7.0,考虑以下代码:对我来说,预期的输出是:PHPNotice:Undefinedvariable:closure但不知何故结果是B然后考虑下面这段代码:现在知道(但还不了解)第一个示例的行为,我的预期输出是:A但是我得到了PHPParseerror:syntaxerror,unexpected'$closure'(T_VARIABLE),expectingidentifier(T_STRING)这种行为完全让我感到困惑。问题第1部分:有人可以解释一下我在第一个示例中的期望有什么问题吗?问题第2部分:行为如何与第一个示例一致? 最佳答案

php - 从 Magento 中的脚本保存具有分层定价的产品模型时的奇怪行为

当我尝试从具有分级定价的MagentoEnterprise1.8脚本中保存产品模型时,我发现了一些奇怪的行为。以这段代码为例://Thisproducthasatierprice$product=Mage::getModel('catalog/product')->load(194760);$product->setName('ChangedProductTitle');$product->save();保存时get异常(详见下文)。但是,如果我在模型中不做任何更改,我不会得到异常。我感觉这是因为我没有更新任何东西,所以Magento没有做那么多工作。//Sameproduct,but

php - 更正 ZF2 重定向行为

我已经使用ZF2几个月了,我对Controller重定向应该如何工作感到困惑。是否应该立即停止处理当前操作,并发送重定向请求?还是应该完成当前操作的处理,然后执行重定向?很基础的问题,是吧?回到ZF1,我很确定重定向是立即发生的(与forward()不同,它会一直存储到当前操作完成)。我假设ZF2中的情况相同,到目前为止这是我的经验,但是今天我突然发现Controller正在存储重定向,并在当前操作结束时发送它。这是一个例子:publicfunctiontestAction(){$this->redirect()->toUrl('/info');echo'Hello';die();}在

php - 破折号和下划线的 preg_match 的奇怪行为

我有以下两个表达式。两者几乎相同,首先我检查以3个破折号结尾的字符串,然后检查以3个下划线结尾的字符串$str="this-is_normal-test---";$str=preg_match("/[a-zA-z0-9]+(-+)$/",$str,$matches);print_r($matches);$str="this-is_normal-test___";$str=preg_match("/[a-zA-z0-9]+(_+)$/",$str,$matches);print_r($matches);这是输出:Array([0]=>test---[1]=>---)Array([0]=>

php - foreach by reference 循环中 unset 的奇怪行为

我知道在按引用循环时不应该修改数组的物理结构,但我需要解释我的代码中发生了什么。我们开始吧:$x=[[0],[1],[2],[3],[4]];foreach($xas$i=>&$upper){print$i;foreach($xas$j=>&$lower){if($i==0&&$j==2){unset($x[2]);}elseif($i==1&&$j==3){unset($x[3]);}}}输出是01。令人惊讶的是,外循环仅针对索引0和1迭代两次。我期望输出为014。我已经阅读了很多关于使用数组引用的危害的博客文章和问题,但没有任何内容可以解释这种现象。几个小时以来,我一直在为此伤脑筋

php - 单个元素的引用行为与数组容器的引用状态分离?

这是什么意思“换句话说,数组的引用行为是在逐个元素的基础上定义的;各个元素的引用行为与数组容器的引用状态分离。”单个元素如何与数组容器的引用状态分离?我正在彻底doc我不明白这是什么意思? 最佳答案 我认为如果您使用一些ASCII艺术,您可能会更好地理解它:第一个例子://Line01$a=1;----------┌──────┐┌─────┐│$a│─────────────────>│1│└──────┘└─────┘//Line02$b=&$a;----------┌──────┐┌─────┐│$a│────────────

带有字符列表的 PHP ltrim 行为

我试图使用phpltrim函数从字符串中剥离一些开始部分。它工作正常,直到它在冒号:之后得到一个i字符。如果它在冒号后找到i,它会忽略i字符。我知道它可以用substr或任何其他方式完成,但我想知道为什么它会发生在trim上。例如。ltrim('mailto:bob@example.com','mailto:');上述函数将返回bob@example.com但是如果我把i放在冒号之后......例如ltrim('mailto:info@example.com','mailto:');这个会返回nfo@example.com谁能解释一下发生了什么? 最佳答案